using ERPBackend.Models;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ERPBackend.Services
{
    public interface IPurchaseReceiptService
    {
        Task<IEnumerable<PurchaseReceipt>> GetAllPurchaseReceiptsAsync();
        Task<PurchaseReceipt?> GetPurchaseReceiptByIdAsync(int id);
        Task<PurchaseReceipt?> GetPurchaseReceiptByCodeAsync(string receiptCode);
        Task<PurchaseReceipt> CreatePurchaseReceiptAsync(PurchaseReceipt purchaseReceipt);
        Task<bool> UpdatePurchaseReceiptAsync(PurchaseReceipt purchaseReceipt);
        Task<bool> DeletePurchaseReceiptAsync(int id);
        Task<bool> ChangePurchaseReceiptStatusAsync(int id, byte status);
        Task<bool> ApprovePurchaseReceiptAsync(int id, int approverId, string? comments);
        Task<int> GetTotalPurchaseReceiptsAsync();
        Task<IEnumerable<PurchaseReceipt>> GetPurchaseReceiptsPagedAsync(int page, int pageSize);
    }
}